﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using Burraco.Library;

namespace Burraco.WinApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            Torneo t;

            t = new Torneo();

            t.creaGiocatoriTest(20);
            t.RegolaSesso = ModalitaSesso.TuttiControTutti;
            t.RegolaCompagni = ModalitaCompagni.Mai;
            t.LimiteRipetiCoppia = 1;
            t.LimiteRipetiAvversario = 2;
            t.LimiteRipetiTavolo = 2;
            t.LimiteRipetiInTavoloZoppoDa2 = 1;
            t.LimiteRipetiInTavoloZoppoDa3 = 1;

            int nPartite = 5;

            DateTime startTime = DateTime.Now;

            while (t.getListaPartite().Count < nPartite)
            {

                Partita p = t.NuovaPartita();

                p.generaTavoli(false);

                //System.out.println();
                //System.out.println("Partita: " + t.getListaPartite().size());
                //p.stampaListaCoppie();
                //p.stampaListaTavoli();
                //System.out.print(".");

            }

            int i = 0;
            foreach (Partita p in t.getListaPartite())
            {
                i++;
                Debug.WriteLine("");
                Debug.WriteLine("Partita: " + i);
                p.stampaListaTavoli();
            }


            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
            dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
            dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
            dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
            dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
            dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;

            List<Partita> partite = t.getListaPartite();
            TemplateCella tc = new TemplateCella();
            i = 0;
            foreach (Partita p in partite)
            {
                i++;
                DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
                col1.Width = 30;
                col1.HeaderText = "Partita " + i;
                col1.Name = "p" + i + "-c1";
                col1.DefaultCellStyle = dataGridViewCellStyle1;
                grdTorneo.Columns.Add(col1);

                DataGridViewTextBoxColumn colmezzo1 = new DataGridViewTextBoxColumn();
                colmezzo1.Width = 10;
                grdTorneo.Columns.Add(colmezzo1);
                DataGridViewTextBoxColumn colmezzo2 = new DataGridViewTextBoxColumn();
                colmezzo2.Width = 10;
                grdTorneo.Columns.Add(colmezzo2);

                DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn();
                col2.Width = 30;
                col2.HeaderText = "Partita " + i;
                col2.Name = "p" + i + "-c2";
                col2.DefaultCellStyle = dataGridViewCellStyle1;
                grdTorneo.Columns.Add(col2);

                DataGridViewTextBoxColumn colmezzo3 = new DataGridViewTextBoxColumn();
                colmezzo3.Width = 10;
                grdTorneo.Columns.Add(colmezzo3);
                DataGridViewTextBoxColumn colmezzo4 = new DataGridViewTextBoxColumn();
                colmezzo4.Width = 10;
                grdTorneo.Columns.Add(colmezzo4);


            }


            Partita partita = t.getListaPartite().ElementAt(0);

            if (partita.TavoloDa2 != null)
            {
                grdTorneo.Rows.Add();
                grdTorneo.Rows.Add();
            }
            if (partita.TavoloDa3 != null)
            {
                grdTorneo.Rows.Add();
                grdTorneo.Rows.Add();
            }

            foreach (TavoloDa4 tav in partita.getListaTavoliDa4())
            {
                grdTorneo.Rows.Add();
                grdTorneo.Rows.Add();
            }

            i = 0;
            foreach (Partita p in partite)
            {
                i++;
                int j = -1;
                if (p.TavoloDa2 != null)
                {
                    DataGridViewRow riga;

                    j++;
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c1"].Value = p.TavoloDa2.getGiocatore(1).NomeCompleto.Trim();
                    
                    j++;
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c1"].Value = p.TavoloDa2.getGiocatore(2).NomeCompleto.Trim();
                }
                if (p.TavoloDa3 != null)
                {
                    DataGridViewRow riga;
                    j++;
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c1"].Value = p.TavoloDa3.getGiocatore(1).NomeCompleto.Trim();
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c2"].Value = p.TavoloDa3.getGiocatore(2).NomeCompleto.Trim();
                    j++;
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c1"].Value = p.TavoloDa3.getGiocatore(3).NomeCompleto.Trim();
                }

                foreach (TavoloDa4 tav in p.getListaTavoliDa4())
                {
                    DataGridViewRow riga;
                    j++;
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c1"].Value = tav.getCoppia(1).getGiocatore(1).NomeCompleto.Trim();
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c2"].Value = tav.getCoppia(1).getGiocatore(2).NomeCompleto.Trim();
                    
                    j++;
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c1"].Value = tav.getCoppia(2).getGiocatore(1).NomeCompleto.Trim();
                    riga = grdTorneo.Rows[j];
                    riga.Cells["p" + i + "-c2"].Value = tav.getCoppia(2).getGiocatore(2).NomeCompleto.Trim();

                }
            }





            DateTime stopTime = DateTime.Now;
            TimeSpan duration = stopTime - startTime;

            Debug.WriteLine("");
            Debug.Write(" Start Time : " + startTime);
            Debug.Write("\t      Stop Time : " + stopTime);
            Debug.WriteLine("\t\tTempo impiegato : " + duration);
            Debug.WriteLine("");

            foreach (Giocatore g in t.getListaGiocatori())
            {
                g.stampaCompagniAvversari();
            }



            //scriviFile(t, "torneo");



            /*
            t = (Torneo)leggiDaFile("torneo");
		
		
            for (int i=0; i<t.getListaPartite().size(); i++) {
                Partita p = t.getListaPartite().get(i);

                p.stampaListaCoppie();
            }
		
            for (int i = 0; i<t.getListaPartite().size(); i++) {
                System.out.println();
                System.out.println("Partita: " + (i+1));
                t.getListaPartite().get(i).stampaListaTavoli();
            }
            System.out.println();
		
            for (int i=0; i<t.getListaGiocatori().size(); i++) {
                t.getListaGiocatori().get(i).stampaCompagniAvversari();
            }
            */
            //System.out.println();

            //p.generaTavoli(true);
            //p.stampaListaTavoli();


        }

    }

    public class TemplateCella : DataGridViewCell
    {
        public TemplateCella()
        {
        }

    }
}
